/*
 * Device Tree common file for LaCie 2Big and 5Big Network v2
 *
 * Copyright (C) 2014
 *
 * Andrew Lunn <andrew@lunn.ch>
 *
 * Based on netxbig_v2-setup.c,
 * Copyright (C) 2010 Simon Guinot <sguinot@lacie.com>
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
*/

#include <dt-bindings/leds/leds-netxbig.h>
#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"

/ {
	chosen {
		bootargs = "console=ttyS0,115200n8";
		stdout-path = &uart0;
	};

	ocp@f1000000 {
		serial@12000 {
			status = "okay";
		};

		spi@10600 {
			status = "okay";

			flash@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				compatible = "mxicy,mx25l4005a", "jedec,spi-nor";
				reg = <0>;
				spi-max-frequency = <20000000>;
				mode = <0>;

				partition@0 {
					reg = <0x0 0x80000>;
					label = "u-boot";
				};
			};
		};

		sata@80000 {
			status = "okay";
			nr-ports = <2>;
		};

	};

	gpio-keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		/*
		 * esc and power represent a three position rocker
		 * switch. Thus the conventional KEY_POWER does not fit
		 */
		exc {
			label = "Back power switch (on|auto)";
			linux,code = <KEY_ESC>;
			linux,input-type = <5>;
			gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
		};
		power {
			label = "Back power switch (auto|off)";
			linux,code = <KEY_1>;
			linux,input-type = <5>;
			gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
		};
		option {
			label = "Function button";
			linux,code = <KEY_OPTION>;
			gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
		};

	};

	gpio-poweroff {
		compatible = "gpio-poweroff";
		gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
	};

	regulators: regulators {
		status = "okay";
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-names = "default";

		regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "hdd0power";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&gpio0 16 GPIO_ACTIVE_HIGH>;
		};
	};

	netxbig_gpio_ext: netxbig-gpio-ext {
		compatible = "lacie,netxbig-gpio-ext";

		addr-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH
			      &gpio1 16 GPIO_ACTIVE_HIGH
			      &gpio1 17 GPIO_ACTIVE_HIGH>;
		data-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH
			      &gpio1 13 GPIO_ACTIVE_HIGH
			      &gpio1 14 GPIO_ACTIVE_HIGH>;
		enable-gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
	};

	netxbig-leds {
		compatible = "lacie,netxbig-leds";

		gpio-ext = <&netxbig_gpio_ext>;

		timers = <NETXBIG_LED_TIMER1 500 500
			  NETXBIG_LED_TIMER2 500 1000>;

		blue-power {
			label = "netxbig:blue:power";
			mode-addr = <0>;
			mode-val = <NETXBIG_LED_OFF 0
				    NETXBIG_LED_ON 1
				    NETXBIG_LED_TIMER1 3
				    NETXBIG_LED_TIMER2 7>;
			bright-addr = <1>;
			max-brightness = <7>;
		};
		red-power {
			label = "netxbig:red:power";
			mode-addr = <0>;
			mode-val = <NETXBIG_LED_OFF 0
				    NETXBIG_LED_ON 2
				    NETXBIG_LED_TIMER1 4>;
			bright-addr = <1>;
			max-brightness = <7>;
		};
		blue-sata0 {
			label = "netxbig:blue:sata0";
			mode-addr = <3>;
			mode-val = <NETXBIG_LED_OFF 0
				    NETXBIG_LED_ON 7
				    NETXBIG_LED_SATA 1
				    NETXBIG_LED_TIMER1 3>;
			bright-addr = <2>;
			max-brightness = <7>;
		};
		red-sata0 {
			label = "netxbig:red:sata0";
			mode-addr = <3>;
			mode-val = <NETXBIG_LED_OFF 0
				    NETXBIG_LED_ON 2
				    NETXBIG_LED_TIMER1 4>;
			bright-addr = <2>;
			max-brightness = <7>;
		};
		blue-sata1 {
			label = "netxbig:blue:sata1";
			mode-addr = <4>;
			mode-val = <NETXBIG_LED_OFF 0
				    NETXBIG_LED_ON 7
				    NETXBIG_LED_SATA 1
				    NETXBIG_LED_TIMER1 3>;
			bright-addr = <2>;
			max-brightness = <7>;
		};
		red-sata1 {
			label = "netxbig:red:sata1";
			mode-addr = <4>;
			mode-val = <NETXBIG_LED_OFF 0
				    NETXBIG_LED_ON 2
				    NETXBIG_LED_TIMER1 4>;
			bright-addr = <2>;
			max-brightness = <7>;
		};
	};
};

&mdio {
	status = "okay";

	ethphy0: ethernet-phy@0 {
		reg = <8>;
	};

	ethphy1: ethernet-phy@1 {
		reg = <0>;
	};
};

&eth0 {
	status = "okay";
	ethernet0-port@0 {
		phy-handle = <&ethphy0>;
	};
};

&pinctrl {
	pinctrl-names = "default";

	pmx_button_function: pmx-button-function {
		marvell,pins = "mpp34";
		marvell,function = "gpio";
	};
	pmx_button_power_off: pmx-button-power-off {
		marvell,pins = "mpp15";
		marvell,function = "gpio";
	};
	pmx_button_power_on: pmx-button-power-on {
		marvell,pins = "mpp13";
		marvell,function = "gpio";
	};
};

&i2c0 {
	status = "okay";

	eeprom@50 {
		compatible = "atmel,24c04";
		pagesize = <16>;
		reg = <0x50>;
	};
};
